home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cxl41.arc / CXLWIN.H < prev    next >
C/C++ Source or Header  |  1989-03-05  |  15KB  |  338 lines

  1.  
  2. /*
  3.    ┌──────────────────────────────────────────────────────────────────────────┐
  4.    │                                                                          │
  5.    │  CXLWIN.H - CXL (c) 1987, 1988 by Mike Smedley.                          │
  6.    │                                                                          │
  7.    │  This header file contains function prototypes and definitions for       │
  8.    │  windowing functions.                                                    │
  9.    │                                                                          │
  10.    └──────────────────────────────────────────────────────────────────────────┘
  11. */
  12.  
  13.  
  14. #if defined(__TURBOC__)                             /*  Turbo C  */
  15.     #if __STDC__
  16.         #define _Cdecl
  17.     #else
  18.         #define _Cdecl  cdecl
  19.     #endif
  20.     #define _Near
  21. #elif defined(__ZTC__)                              /*  Zortech C++  */
  22.     #define _Cdecl
  23.     #define _Near
  24. #elif defined(M_I86) && !defined(__ZTC__)           /*  Microsoft C/QuickC  */
  25.     #if !defined(NO_EXT_KEYS)
  26.         #define _Cdecl  cdecl
  27.         #define _Near   near
  28.     #else
  29.         #define _Cdecl
  30.         #define _Near
  31.     #endif
  32. #elif defined(__POWERC__)                           /*  Power C  */
  33.     #define _Cdecl
  34.     #define _Near
  35. #endif
  36.  
  37.  
  38. /*------------------------------[ WINDOW type ]------------------------------*/
  39.  
  40. typedef     int     WINDOW;
  41.  
  42.  
  43. /*---------------------------[ Function Prototypes ]-------------------------*/
  44.  
  45. int      _Cdecl disktowin(char *fname);
  46. void     _Cdecl videoinit(void);
  47. int      _Cdecl wactiv(WINDOW whandle);
  48. int      _Cdecl wblocked(WINDOW whandle);
  49. int      _Cdecl wborder(int btype);
  50. int      _Cdecl wbox(int wsrow,int wscol,int werow,int wecol,int btype
  51.                 ,int attr);
  52. int      _Cdecl wcclear(int attr);
  53. int      _Cdecl wcenters(int wrow,int attr,char *str);
  54. int      _Cdecl wchgattr(int battr,int wattr);
  55. int      _Cdecl wclose(void);
  56. int      _Cdecl wcloseall(void);
  57. int      _Cdecl wclreol(void);
  58. int      _Cdecl wclreos(void);
  59. WINDOW   _Cdecl wcopy(int nsrow,int nscol);
  60. int      _Cdecl wdelline(int wrow,int direc);
  61. int      _Cdecl wdupc(int ch,int count);
  62. char    *_Cdecl werrmsg(void);
  63. int      _Cdecl wfill(int wsrow,int wscol,int werow,int wecol,int ch,int attr);
  64. struct _wrec_t *_Cdecl wfindrec(WINDOW whandle);
  65. int      _Cdecl wgetc(void);
  66. int      _Cdecl wgetchf(char *valid,int defchar);
  67. int      _Cdecl wgets(char *str);
  68. int      _Cdecl wgetns(char *str,int max);
  69. int      _Cdecl wgotoxy(int wrow,int wcol);
  70. WINDOW   _Cdecl whandle(void);
  71. int      _Cdecl whide(void);
  72. int      _Cdecl whline(int wsrow,int wscol,int count,int btype);
  73. int      _Cdecl winpdef(int wrow,int wcol,char *str,char *format,int fconv,
  74.                         int fattr,int update,int (*validate) (char *));
  75. int      _Cdecl winpread(void);
  76. int      _Cdecl winputsf(char *str,char *fmt);
  77. int      _Cdecl winsline(int wrow,int direc);
  78. int      _Cdecl wintodisk(int srow,int scol,int erow,int ecol,char *fname);
  79. int      _Cdecl wmenudef(int wrow,int wcol,int attr,char *str,int tagchar,
  80.                          int tagattr,char *desc);
  81. int      _Cdecl wmenuget(int barattr,int taginit,int pulldown);
  82. int      _Cdecl wmessage(char *str,int border,int leftofs,int attr);
  83. int      _Cdecl wmove(int nsrow,int nscol);
  84. WINDOW   _Cdecl wopen(int srow,int scol,int erow,int ecol,int btype,int battr,
  85.                     int wattr);
  86. int      _Cdecl wperror(char *message);
  87. int      _Cdecl wpgotoxy(int wrow,int wcol);
  88. int      _Cdecl wprintc(int wrow,int wcol,int attr,int ch);
  89. int      _Cdecl wprintf(const char *format,...);
  90. int      _Cdecl wprints(int wrow,int wcol,int attr,char *str);
  91. int      _Cdecl wputc(int ch);
  92. int      _Cdecl wputns(char *str,int width);
  93. int      _Cdecl wputs(char *str);
  94. int      _Cdecl wreadcur(int *wrow,int *wcol);
  95. void     _Cdecl wrestore(int *wbuf);
  96. int      _Cdecl wrjusts(int wrow,int wjcol,int attr,char *str);
  97. int     *_Cdecl wsave(int srow,int scol,int erow,int ecol);
  98. int      _Cdecl wsbounds(int wssrow,int wsscol,int wserow,int wsecol);
  99. int      _Cdecl wscanf(const char *format,...);
  100. int      _Cdecl wscroll(int count,int direc);
  101. int      _Cdecl wsseldef(char *str);
  102. char    *_Cdecl wsselget(int attr);
  103. int      _Cdecl wsize(int nerow,int necol);
  104. int      _Cdecl wtextattr(int attr);
  105. int      _Cdecl wtitle(char *str,int tpos,int tattr);
  106. int      _Cdecl wunhide(WINDOW whandle);
  107. int      _Cdecl wvline(int wsrow,int wscol,int count,int btype);
  108.  
  109.  
  110. /*----------------------[ structure of window records ]----------------------*/
  111.  
  112. struct  _wrec_t {
  113.     struct _wrec_t *prev;               /*  pointer to previous record       */
  114.     struct _wrec_t *next;               /*  pointer to next record           */
  115.     int *wbuf;                          /*  address of window's buffer       */
  116.     WINDOW whandle;                     /*  window's handle                  */
  117.     unsigned char srow;                 /*  start row of window              */
  118.     unsigned char scol;                 /*  start column of window           */
  119.     unsigned char erow;                 /*  end row of window                */
  120.     unsigned char ecol;                 /*  end column of window             */
  121.     unsigned char btype;                /*  window's box type                */
  122.     unsigned char wattr;                /*  window's initial text attribute  */
  123.     unsigned char battr;                /*  atrribute of window's border     */
  124.     unsigned char border;               /*  has border?  0 = no, 1 = yes     */
  125.     unsigned char row;                  /*  window's current cursor row      */
  126.     unsigned char column;               /*  window's current cursor column   */
  127.     unsigned char attr;                 /*  window's current text attribute  */
  128.     char *title;                        /*  address of window's title string */
  129.     unsigned char tpos;                 /*  position of window's title       */
  130.     unsigned char tattr;                /*  attribute of window's title      */
  131.     unsigned char ssrow;                /*  scroll start row                 */
  132.     unsigned char sscol;                /*  scroll start column              */
  133.     unsigned char serow;                /*  scroll end row                   */
  134.     unsigned char secol;                /*  scroll end column                */
  135. };
  136.  
  137.  
  138. /*-------------------[ variables used by window manager ]--------------------*/
  139.  
  140.                                        /*  pointer to current record         */
  141. extern struct _wrec_t *_Near _Cdecl _wrec;
  142. extern int    _Near _Cdecl _werrno;    /*  last window function error code   */
  143. extern int    _Near _Cdecl _wtotal;    /*  total number of open windows      */
  144. extern WINDOW _Near _Cdecl _whandle;   /*  last assigned handle number       */
  145. extern int    _Near _Cdecl _wesc;      /*  Escape checking flag              */
  146.                                        /*  pointer to highest hidden record  */
  147. extern struct _wrec_t *_Near _Cdecl _whrec;
  148.  
  149.  
  150. /*-------------[ error codes returned from windowing functions ]-------------*/
  151.  
  152. #define W_NOERROR   0                   /*  no error                        */
  153. #define W_ALLOCERR  1                   /*  memory allocation error         */
  154. #define W_NOTFOUND  2                   /*  window handle not found         */
  155. #define W_NOACTIVE  3                   /*  no active window                */
  156. #define W_INVCOORD  4                   /*  invalid coordinates             */
  157. #define W_ESCPRESS  5                   /*  Escape key was pressed          */
  158. #define W_INVFORMT  6                   /*  invalid format string           */
  159. #define W_NOINPDEF  7                   /*  no inputs defined               */
  160. #define W_STRLONG   8                   /*  string too long for window      */
  161. #define W_NOBARDEF  9                   /*  no bar menu records defined     */
  162. #define W_INVBTYPE  10                  /*  invalid box type                */
  163. #define W_INVTPOS   11                  /*  invalid title position          */
  164. #define W_NOBORDER  12                  /*  no window border                */
  165. #define W_NOSELDEF  13                  /*  no selection records defined    */
  166. #define W_LENFORMT  14                  /*  length of format string invalid */
  167. #define W_NOHIDDEN  15                  /*  no hidden windows               */
  168. #define W_NOTHIDD   16                  /*  window is not hidden            */
  169.  
  170.  
  171. /*---------------[ direction codes for scrolling functions ]----------------*/
  172.  
  173. #define SDOWN        0                  /*  scroll down                     */
  174. #define SUP          1                  /*  scroll up                       */
  175.  
  176.  
  177. /*---------------------[ window input record definition ]--------------------*/
  178.  
  179. struct _winp_t {
  180.     struct _winp_t *prev;               /*  pointer to previous record      */
  181.     struct _winp_t *next;               /*  pointer to next record          */
  182.     unsigned char wrow;                 /*  start of input - window row     */
  183.     unsigned char wcol;                 /*  start of input - window column  */
  184.     char *str;                          /*  address of receiving string     */
  185.     char *buf;                          /*  address of temp receive string  */
  186.     char *format;                       /*  input field format string       */
  187.     char fconv;                         /*  field conversion character      */
  188.     unsigned char fattr;                /*  input field attribute           */
  189.     int (*validate) (char *);           /*  addr. of validation function    */
  190.     int lenbuf;                         /*  length of buffer                */
  191.     int lenfld;                         /*  length of screen input field    */
  192.     int lenfmt;                         /*  length of format string         */
  193. };
  194.  
  195.  
  196. /*-----------------[ variables used by window input functions ]--------------*/
  197.  
  198.                                         /*  pointer to highest record       */
  199. extern struct _winp_t *_Near _Cdecl _winp;
  200.  
  201.  
  202. /*------------------[ window bar menu record definition ]--------------------*/
  203.  
  204. struct _wmenu_t {
  205.     struct _wmenu_t *prev;              /*  pointer to previous record      */
  206.     struct _wmenu_t *next;              /*  pointer to next record          */
  207.     unsigned char wrow;                 /*  start of text opt - window row  */
  208.     unsigned char wcol;                 /*  start of text opt - window col  */
  209.     unsigned char attr;                 /*  attribute of text option        */
  210.     char *str;                          /*  string containing text option   */
  211.     unsigned char tagchar;              /*  tag character                   */
  212.     unsigned char tagattr;              /*  attribute of tag character      */
  213.     char *desc;                         /*  text description of menu option */
  214. };
  215.  
  216.  
  217. /*-------------[ variables used by window bar menu functions ]---------------*/
  218.  
  219.                                         /*  pointer to highest record       */
  220. extern struct _wmenu_t *_Near _Cdecl _wmenu;
  221.  
  222.  
  223. /*--------------[ pull-down menu definitions for wmenuget() ]----------------*/
  224.  
  225. #define PDMAIN      1                   /*  main menu of a pull-down system  */
  226. #define PDPREV      2                   /*  main menu, select prev pull-down */
  227. #define PDNEXT      3                   /*  main menu, select next pull-down */
  228. #define PDMENU      4                   /*  pull-down menu                   */
  229.  
  230.  
  231. /*------------------[ window selection record definition ]-------------------*/
  232.  
  233. struct _wssel_t {
  234.     struct _wssel_t *prev;              /*  pointer to previous record       */
  235.     struct _wssel_t *next;              /*  pointer to next record           */
  236.     char *str;                          /*  string used for selection        */
  237. };
  238.  
  239.  
  240. /*------------[ window title position definitions for wtitle() ]-------------*/
  241.  
  242. #define TDELETE     0                   /*  delete title                    */
  243. #define TLEFT       1                   /*  left justified                  */
  244. #define TCENTER     2                   /*  centered                        */
  245. #define TRIGHT      3                   /*  right justified                 */
  246.  
  247.  
  248. /*------------------------[ definition of NULL ]-----------------------------*/
  249.  
  250. #if !defined(NULL)
  251.     #if defined(__TURBOC__)                         /*  Turbo C  */
  252.         #if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  253.             #define NULL    0
  254.         #else
  255.             #define NULL    0L
  256.         #endif
  257.     #elif defined(__ZTC__)                          /*  Zortech C++  */
  258.         #ifdef LPTR
  259.             #define NULL    0L
  260.         #else
  261.             #define NULL    0
  262.         #endif
  263.     #elif defined(M_I86) && !defined(__ZTC__)       /*  Microsoft C/QuickC  */
  264.         #if defined(M_I86SM) || defined(M_I86MM)
  265.             #define NULL    0
  266.         #else
  267.             #define NULL    0L
  268.         #endif
  269.     #elif defined(__POWERC__)                       /*  Power C  */
  270.         #define NULL    0
  271.     #endif
  272. #endif
  273.  
  274.  
  275. /*-----------------------[ video RAM segment address ]-----------------------*/
  276.  
  277. extern unsigned _Near _Cdecl _videoseg;
  278.  
  279.  
  280. /*--------------[ attribute codes for functions that use them ]--------------*/
  281.  
  282.     /*  attribute codes are created by ORing the codes for foreground
  283.         color, background color, and optionally blink, together.  For
  284.         example, to create an attribute code for light blue on green,
  285.         you would use LBLUE|_GREEN and to make the foreground blink,
  286.         you would add |BLINK onto the end of that.                      */
  287.  
  288. #if     !defined(BLACK)                 /*  foreground colors  */
  289. #define BLACK       0                   
  290. #define BLUE        1
  291. #define GREEN       2
  292. #define CYAN        3
  293. #define RED         4
  294. #define MAGENTA     5
  295. #define BROWN       6
  296. #define YELLOW      14
  297. #define WHITE       15
  298. #endif
  299. #if     !defined(LGREY)
  300. #define LGREY       7                   /*  CXL abbreviates LIGHT as L     */
  301. #define DGREY       8                   /*  and DARK as D for ease of use  */
  302. #define LBLUE       9
  303. #define LGREEN      10
  304. #define LCYAN       11
  305. #define LRED        12
  306. #define LMAGENTA    13
  307.  
  308. #define _BLACK      0                   /*  background colors  */
  309. #define _BLUE       16
  310. #define _GREEN      32
  311. #define _CYAN       48
  312. #define _RED        64
  313. #define _MAGENTA    80
  314. #define _BROWN      96
  315. #define _LGREY      112
  316. #endif
  317.  
  318. #if     !defined(BLINK)
  319. #define BLINK       128                 /*  blink attribute  */
  320. #endif
  321.  
  322.  
  323. /*-----------------------[ Macro-Function Definitions ]----------------------*/
  324.  
  325. #if !defined(MK_FP)
  326. #define MK_FP(seg,ofs)      ((void far *) (((unsigned long)(seg) << 16) | \
  327.                             (unsigned)(ofs)))
  328. #endif
  329. #if !defined(attrib)
  330. #define attrib(f,b,i,bl)    ((b<<4)|(f)|(i<<3)|(bl<<7))
  331. #endif
  332. #if !defined(clrwin)
  333. #define clrwin(a,b,c,d)     gotoxy_(a,b);fill(a,b,c,d,' ',(readchat()>>8))
  334. #endif
  335. #define wclear()            wcclear(_wrec->wattr)
  336. #define wisactiv(a)         ((a==_wrec->whandle)?1:0)
  337. #define wsetesc(a)          _wesc=((a)?1:0)
  338.